package movilmax.sia_corp.action;


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;


import utilidades.Cadena;

import movilmax.sia_corp.model.ListaCc;
import movilmax.sia_corp.model.ListaSs;
import movilmax.sia_corp.model.Usuario;
import movilmax.sia_corp.model.Listax;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ListaSite  extends ActionSupport {
	private static final long serialVersionUID = -6796173547697629109L;
	private Conectar BASE;
	private List<Listax> lst_sucursales;
	private List<Listax> lst_servicios;
	private List<Listax> lst_productos;
	private List<ListaSs> tabla_ss;
	
	private List<ListaCc> tabla_cc;
	private String cod_prospecto;
	private String cod_item;
	private String sucursal;
	private String servicio;
	private String producto;
	private String sel;
	private String obs;
	private String ctd;
	private String cant;
    private ListaCc contacto;
    
 
	private String id_objss;
	
	public void validate(){	
		try{
			if( this.getCod_prospecto().length() == 0 ){	
				this.addActionError("Debe cargar el prospecto" );
				return;
			}
		    	
		}catch(Exception err){
			
		}
	} 
	

	@SuppressWarnings("rawtypes")
	public String guardar_contacto() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    boolean ok=false;
	    if (USUARIO!=null){	
	    	BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String SQL="";
	    			int i=0;
  		    	      //crear o actualizar contactos
	    			    Cadena C=new Cadena();
	    			    LinkedList lst_suc1=C.tokens(this.getContacto().getCod_sucursal(), ",");
  		    	    	LinkedList lst_cod=C.tokens(this.getContacto().getCodigo(), ",");
  		    	    	LinkedList lst_tp=C.tokens(this.getContacto().getTipo() , ",");
  		    	    	LinkedList lst_ct=C.tokens(this.getContacto().getContacto() , ",");
  		    	    	LinkedList lst_te=C.tokens(this.getContacto().getTel(), ",");
  		    	    	LinkedList lst_ce=C.tokens(this.getContacto().getCel(), ",");
  		    	    	LinkedList lst_em=C.tokens(this.getContacto().getEmail(), ",");
  		    	    	for(i=0; i<lst_cod.size();i++){
  		    	    		String suc=lst_suc1.get(i).toString();
  		    	    		String tip=lst_tp.get(i).toString();
  		    	    		String cod=lst_cod.get(i).toString();
  		    	    		String des=lst_ct.get(i).toString();
  		    	    		String tel=lst_te.get(i).toString();
  		    	    		String cel=lst_ce.get(i).toString();
  		    	    		String ema=lst_em.get(i).toString();
  		    	    		if(cod.equals("-1") ){
  		    	    			if( des.length()>2 && (tel.length()>2 || cel.length()>2 ) && !suc.equals("-1") && !tip.equals("Seleccione") ){
	  		    	    			cod=BASE.getBaseDatos().generarCodigo("referencias_personales","codigo");
		  		    	    		SQL="INSERT INTO referencias_personales " +
		  	  		    			"(codigo,docid,razonsocial,telefono,celular,email,tipo,usuario_registro,fecha_registro,hora_registro) "+
		  	  		    			"VALUES('"+cod+"','TMP_"+ cod +"','"+des.toUpperCase() +"','"+ tel +"','"+ cel +"','"+ema+"','"+tip.toUpperCase() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
		  	  		    	        BASE.getBaseDatos().ejecutar(SQL);
			  	  		    	    SQL="INSERT INTO referencias_prospectos (prospecto,referencia,sucursal) VALUES('"+ this.getCod_prospecto() +"','"+ cod +"','"+suc+"' )";
		  	  		    	        boolean rp=BASE.getBaseDatos().ejecutar(SQL);
		  	  		    	        if(rp){
		  	  		    	            this.addActionMessage("Contacto "+des+" agregado");
		  	  		    	            	SQL="INSERT INTO corp_seguimiento_actividades " +
		  	  		    	            		"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
		  	  		    	            		"VALUES('"+this.getCod_prospecto()+"','9','9992','INSERTO','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','HECHO' )";
		  	  		    	            		BASE.getBaseDatos().ejecutar(SQL);
		  	  		    	            ok=true; 	
		  	  		    	        }else{
		  	  		    	        	this.addActionError(des+" No se pudo agregar");
		  	  		    	        }
  		    	    			}else{
  		    	    				this.addActionError("Datos insuficientes para efectuar la operacion");	
  		    	    			}
  		    	    		}else{
  		    	    			SQL="UPDATE referencias_personales set " +
	  	  		    			" razonsocial='"+des+"',telefono='"+ tel +"',celular='"+ cel +"',email='"+ema+"',tipo='"+tip+"'  "+
	  	  		    			" where codigo='"+cod+"'  ";
  		    	    			boolean rp=BASE.getBaseDatos().ejecutar(SQL);
	  	  		    	        if(rp){
	  	  		    	            this.addActionMessage("Contacto "+des+" actualizado");
	  	  		    	            SQL="INSERT INTO corp_seguimiento_actividades " +
		    	            		    "(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
		    	            		    "VALUES('"+this.getCod_prospecto()+"','9','9992','ACTUALIZO','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','HECHO' )";
		    	            		     BASE.getBaseDatos().ejecutar(SQL);
	  	  		    	            ok=true; 	
	  	  		    	        }else{
	  	  		    	        	this.addActionError(des+" no se pudo actualizar"); 	
	  	  		    	        }
  		    	    		}
  		    	    		
  		    	    	}	
  		    	     
	    	  }catch(Exception err  ){
				    //this.addActionError("Error: "+err.toString() );
				    this.addActionError("Error: datos insuficientes" );
			  } 
	    	  BASE.getBaseDatos().cerrarConexion(); 
		   }
		   else
			 this.addActionError("No hay conexion al servidor");  
	      } 
	     else
		    this.addActionError("La sesion del usuario ha caducado");   	
	    
	     if(ok){
	    	 session.remove("ses_tabla_cc");
	    	 agregarContacto();
	    	 return SUCCESS;
	     }else{
	    	 agregarContacto();
	    	 return ERROR;
	     }
    } 
	
	private String listar_sucursales(){
		lst_sucursales= new ArrayList<Listax>();
			  try{
				if(cod_prospecto==null)
					 return SUCCESS;
		    	String SQL="Select X.cod,UPPER(X.descripcion) as descripcion "+
	    	      "From corp_sucursales X  "+
	    	      "where X.prospecto='"+ this.getCod_prospecto() + "' and X.cliente='0' Order by X.cod ASC "; 	

				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  lst_sucursales.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	private String listar_servicios() {
		lst_servicios= new ArrayList<Listax>();
			  try{
		       String SQL="Select X.cod,UPPER(X.descripcion) as descripcion "+
	    	      "From corp_servicios X  "+
	    	      "where X.mostrar='1' and X.prosp='1' Order by X.descripcion  "; 	 	

				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  lst_servicios.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	
	@SuppressWarnings("rawtypes")
	private String listar_productos()  {
		lst_productos= new ArrayList<Listax>();
			  try{
				  String cod_serv="0";
				  Cadena C=new Cadena();
				  LinkedList vrs=C.tokens(this.getServicio(), ",");
				  for(int i=0; i<vrs.size();i++){
					  LinkedList ids= C.tokens(this.getId_objss() ,"_") ;
					  String id_sel=ids.get(1).toString().trim();
					  if(id_sel.equals( C.convertirStr(i+1) ) ) {
						  cod_serv=vrs.get(i).toString();
					  }
				  }
		    	String SQL="Select X.cod,X.descripcion,X.megas  "+
	    	      "From corp_productos X,corp_servicios_prod Z  "+
	    	      "where Z.servicio='"+ cod_serv +"' and Z.mostrar='1' and X.cod=Z.producto and X.mostrar='1' and X.megas>0 Order by X.megas ASC "; 	
				Resultado  RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						 // LST.setDescripcion(RCS.getCadena("descripcion"));
						  LST.setDescripcion(RCS.getCadena("megas")+" Mbps");
						  lst_productos.add(LST);
					  }while(RCS.sigItem()); 
				  }
			   }catch(Exception err  ){
					//hubo un error .....
			}  
		  return SUCCESS;
	} 
	

	  public String getJSON(){
		@SuppressWarnings("rawtypes")
		Map session = ActionContext.getContext().getSession();
		  Usuario USUARIO = (Usuario)session.get("ses_usuario");
		  if (USUARIO==null){
			  this.addActionError("La sesion del usuario ha caducado");
			  return ERROR;
		  }
		 BASE= new Conectar();
		  if(BASE.getMsg().equals("SI")){	
			  listar_sucursales();
			  listar_servicios();
			  if(servicio!=null){
			    listar_productos();  
			  }
			  BASE.getBaseDatos().cerrarConexion(); 
			 return SUCCESS;
		  }else{
			  this.addActionError("No hay conexion al servidor");
		      return ERROR;
		  }
	    
      }
	  
	 /*******************************************************************************************************************************************/
	 
	 @SuppressWarnings({ "rawtypes", "unchecked" })
	public String agregarContacto(){
		  Map session = ActionContext.getContext().getSession();
		  Object lst_t = (Object)session.get("ses_tabla_cc");
		  if (lst_t==null){
			  tabla_cc= new ArrayList<ListaCc>();
			  if(cod_prospecto!=null){
			   BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){
		    	   String SQL="select R.codigo,R.razonsocial,R.telefono,R.celular,R.email,R.tipo,S.cod as cod_suc,S.descripcion as des_suc "+
							"from referencias_prospectos X,referencias_personales R,corp_sucursales S "+
							"where X.prospecto='"+this.getCod_prospecto() +"' and X.referencia=R.codigo and X.sucursal=S.cod and S.cliente='0' ";	
		    	   Resultado RCS = BASE.getBaseDatos().consultar(SQL);
		    	   if(RCS.RP){
		    		  do{
		    			  ListaCc LST=new ListaCc();
		    			  LST.setId(new Cadena().convertirStr( tabla_cc.size() +1));
		    			  LST.setCodigo(RCS.getCadena("codigo"));
		    			  LST.setContacto(RCS.getCadena("razonsocial"));
		    			  if (RCS.getCadena("telefono").equals("") )
		    				  LST.setTel("0");
		    			  else
		    			      LST.setTel(RCS.getCadena("telefono"));
		    			  
		    			  if (RCS.getCadena("celular").equals("") )
		    				  LST.setCel("0");
		    			  else
		    			      LST.setCel(RCS.getCadena("celular"));
		    			  
		    			  if (RCS.getCadena("email").equals("") )
		    				  LST.setEmail("@");
		    			  else
		    				  LST.setEmail(RCS.getCadena("email"));

		    			  
		    			  LST.setTipo(RCS.getCadena("tipo"));
		    			  LST.setSucursal(RCS.getCadena("des_suc"));
		    			  LST.setCod_sucursal(RCS.getCadena("cod_suc"));
		    			  tabla_cc.add(LST);
		    		  }while(RCS.sigItem());
			    		  /*for(i=tabla_cc.size();i<5;i++){
			    		      ListaCc LST=new ListaCc();
			    			  LST.setId(new Cadena().convertirStr(  tabla_cc.size() +1 ));
			    			  LST.setContacto(".");
			    			  LST.setTel("0");
			    			  LST.setCel("0");
			    			  LST.setEmail("@");
			    			  LST.setCodigo("-1");
			    			  LST.setTipo("Seleccione");
			    			  LST.setCod_sucursal("-1");
			    			  LST.setSucursal("Seleccione");
			    			  tabla_cc.add(LST);
		    		      } */
		    	   }else{
		    		    /* for(i=0;i<5;i++){
			    		      ListaCc LST=new ListaCc();
			    			  LST.setId(new Cadena().convertirStr(  tabla_cc.size() +1 ));
			    			  LST.setContacto(".");
			    			  LST.setTel("0");
			    			  LST.setCel("0");
			    			  LST.setEmail("@");
			    			  LST.setCodigo("-1");
			    			  LST.setTipo("Seleccione");
			    			  LST.setCod_sucursal("-1");
			    			  LST.setSucursal("Seleccione");
			    			  tabla_cc.add(LST);
		    		    } */
		    	   }
		    	      ListaCc LST=new ListaCc();
	    			  LST.setId(new Cadena().convertirStr(  tabla_cc.size() +1 ));
	    			  LST.setContacto(".");
	    			  LST.setTel("0");
	    			  LST.setCel("0");
	    			  LST.setEmail("@");
	    			  LST.setCodigo("-1");
	    			  LST.setTipo("Seleccione");
	    			  LST.setCod_sucursal("-1");
	    			  LST.setSucursal("Seleccione");
	    			  tabla_cc.add(LST);
	    			BASE.getBaseDatos().cerrarConexion();   
		    	}
			  }	
		  }else{
			  tabla_cc = (ArrayList<ListaCc>)lst_t;
		  }
		  session.put("ses_tabla_cc",tabla_cc);
		  return SUCCESS;
	  }
	 
	public List<Listax> getLst_servicios() {
		return lst_servicios;
	}
	public void setLst_servicios(List<Listax> lst_servicios) {
		this.lst_servicios = lst_servicios;
	}
	public List<Listax> getLst_productos() {
		return lst_productos;
	}
	public void setLst_productos(List<Listax> lst_productos) {
		this.lst_productos = lst_productos;
	}
	public List<Listax> getLst_sucursales() {
		return lst_sucursales;
	}
	public void setLst_sucursales(List<Listax> lst_sucursales) {
		this.lst_sucursales = lst_sucursales;
	}
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public String getServicio() {
		return servicio;
	}
	public void setServicio(String servicio) {
		this.servicio = servicio;
	}
	public String getProducto() {
		return producto;
	}
	public void setProducto(String producto) {
		this.producto = producto;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getSucursal() {
		return sucursal;
	}
	public void setSucursal(String sucursal) {
		this.sucursal = sucursal;
	}
	public List<ListaSs> getTabla_ss() {
		return tabla_ss;
	}
	public void setTabla_ss(List<ListaSs> tabla_ss) {
		this.tabla_ss = tabla_ss;
	}
	public String getId_objss() {
		return id_objss;
	}
	public void setId_objss(String id_objss) {
		this.id_objss = id_objss;
	}
	public List<ListaCc> getTabla_cc() {
		return tabla_cc;
	}
	public void setTabla_cc(List<ListaCc> tabla_cc) {
		this.tabla_cc = tabla_cc;
	}
	public ListaCc getContacto() {
		return contacto;
	}
	public void setContacto(ListaCc contacto) {
		this.contacto = contacto;
	}
	public String getCod_item() {
		return cod_item;
	}
	public void setCod_item(String cod_item) {
		this.cod_item = cod_item;
	}
	public String getCtd() {
		return ctd;
	}
	public void setCtd(String ctd) {
		this.ctd = ctd;
	}
	public String getCant() {
		return cant;
	}
	public void setCant(String cant) {
		this.cant = cant;
	}
	public String getSel() {
		return sel;
	}
	public void setSel(String sel) {
		this.sel = sel;
	}
	
}
